package com.tianqi.common.enums;

/**
 * 六十四个六爻卦象
 *
 * @author zhangzedi
 * @date 2023/8/19 14:10
 **/
public enum GuaMainGanZhiEnum {
	LIWEIHUO("33", "离为火", "己卯", "己丑", "己亥", "己酉", "己未", "己巳", 6, 3),
	HUOSHANLV("37", "火山旅", "丙辰", "丙午", "丙申", "己酉", "己未", "己巳", 1, 4),
	HUOFENGDING("35", "火风鼎", "辛丑", "辛亥", "辛酉", "己酉", "己未", "己巳", 2, 5),
	HUOSHUIWEIJI("36", "火水未济", "戊寅", "戊辰", "戊午", "己酉", "己未", "己巳", 3, 6),
	SHANSHUIMENG("76", "山水蒙", "戊寅", "戊辰", "戊午", "丙戌", "丙子", "丙寅", 4, 1),
	FENGSHUIHUAN("56", "风水涣", "戊寅", "戊辰", "戊午", "辛未", "辛巳", "辛卯", 5, 2),
	TIANSHUISONG("16", "天水讼", "戊寅", "戊辰", "戊午", "壬午", "壬申", "壬戌", 4, 1),
	TIANHUOTONGREN("13", "天火同人", "己卯", "己丑", "己亥", "壬午", "壬申", "壬戌", 3, 6),


	KANWEISHUI("66", "坎为水", "戊寅", "戊辰", "戊午", "戊申", "戊戌", "戊子", 6, 3),
	SHUIZEJIE("62", "水泽节", "丁巳", "丁卯", "丁丑", "戊申", "戊戌", "戊子", 1, 4),

	SHUILEITUI("64", "水雷屯", "庚子", "庚寅", "庚辰", "戊申", "戊戌", "戊子", 2, 5),

	SHUIHUOJIJI("63", "水火既济", "己卯", "己丑", "己亥", "戊申", "戊戌", "戊子", 3, 6),

	ZEHUOGE("23", "泽火革", "己卯", "己丑", "己亥", "丁亥", "丁酉", "丁未", 4, 1),

	LEIHUOFENG("43", "雷火丰", "己卯", "己丑", "己亥", "庚午", "庚申", "庚戌", 5, 2),

	DIHUOMINGYI("83", "地火明夷", "己卯", "己丑", "己亥", "癸丑", "癸亥", "癸酉", 4, 1),

	DISHUISHI("86", "地水师", "戊寅", "戊辰", "戊午", "癸丑", "癸亥", "癸酉", 3, 6),


	GENWEISHAN("77", "艮为山", "丙辰", "丙午", "丙申", "丙戌", "丙子", "丙寅", 6, 3),

	SHANHUOBEN("73", "山火贲", "己卯", "己丑", "己亥", "丙戌", "丙子", "丙寅", 1, 4),

	SHANTIANDACHU("71", "山天大畜", "甲子", "甲寅", "甲辰", "丙戌", "丙子", "丙寅", 2, 5),

	SHANZESHUI("72", "山泽损", "丁巳", "丁卯", "丁丑", "丙戌", "丙子", "丙寅", 3, 6),

	HUOZEKUI("32", "火泽睽", "丁巳", "丁卯", "丁丑", "己酉", "己未", "己巳", 4, 1),

	TIANZELV("12", "天泽履", "丁巳", "丁卯", "丁丑", "壬午", "壬申", "壬戌", 5, 2),

	FENGZEZHONGFU("52", "风泽中孚", "丁巳", "丁卯", "丁丑", "辛未", "辛巳", "辛卯", 4, 1),

	FENGSHANJIAN("57", "风山渐", "丙辰", "丙午", "丙申", "辛未", "辛巳", "辛卯", 3, 6),


	DUIWEIZE("22", "兑为泽", "丁巳", "丁卯", "丁丑", "丁亥", "丁酉", "丁未", 6, 3),

	ZESHUIKUN("26", "泽水困", "戊寅", "戊辰", "戊午", "丁亥", "丁酉", "丁未", 1, 4),

	ZEDICUI("28", "泽地萃", "乙未", "乙巳", "乙卯", "丁亥", "丁酉", "丁未", 2, 5),

	ZESHANWEI("27", "泽山咸", "丙辰", "丙午", "丙申", "丁亥", "丁酉", "丁未", 3, 6),

	SHUISHANQIAN("67", "水山蹇", "丙辰", "丙午", "丙申", "戊申", "戊戌", "戊子", 4, 1),

	DISHANJIAN("87", "地山谦", "丙辰", "丙午", "丙申", "癸丑", "癸亥", "癸酉", 5, 2),

	LEISHANXIAOGUO("47", "雷山小过", "丙辰", "丙午", "丙申", "庚午", "庚申", "庚戌", 4, 1),

	LEIZEGUIMEI("42", "雷泽归妹", "丁巳", "丁卯", "丁丑", "庚午", "庚申", "庚戌", 3, 6),


	LEIWEIZHEN("44", "震为雷", "庚子", "庚寅", "庚辰", "庚午", "庚申", "庚戌", 6, 3),
	LEIDIYU("48", "雷地豫", "乙未", "乙巳", "乙卯", "庚午", "庚申", "庚戌", 1, 4),
	LEISHUIJIE("46", "雷水解", "戊寅", "戊辰", "戊午", "庚午", "庚申", "庚戌", 2, 5),
	LEIFENGHENG("45", "雷风恒", "辛丑", "辛亥", "辛酉", "庚午", "庚申", "庚戌", 3, 6),

	DIFENGSHEN("85", "地风升", "辛丑", "辛亥", "辛酉", "癸丑", "癸亥", "癸酉", 4, 1),

	SHUIFENGJING("65", "水风井", "辛丑", "辛亥", "辛酉", "戊申", "戊戌", "戊子", 5, 2),

	ZEFENGDAGUO("25", "泽风大过", "辛丑", "辛亥", "辛酉", "丁亥", "丁酉", "丁未", 4, 1),

	ZELEISUI("24", "泽雷随", "庚子", "庚寅", "庚辰", "丁亥", "丁酉", "丁未", 3, 6),


	XUNWEIFENG("55", "巽为风", "辛丑", "辛亥", "辛酉", "辛未", "辛巳", "辛卯", 6, 3),

	FENGTIANXIAOXU("51", "风天小畜", "甲子", "甲寅", "甲辰", "辛未", "辛巳", "辛卯", 1, 4),

	FENGHUOJIAREN("53", "风火家人", "己卯", "己丑", "己亥", "辛未", "辛巳", "辛卯", 2, 5),

	FENGLEIYI("54", "风雷益", "庚子", "庚寅", "庚辰", "辛未", "辛巳", "辛卯", 3, 6),

	TIANLEIWUWANG("14", "天雷无妄", "庚子", "庚寅", "庚辰", "壬午", "壬申", "壬戌", 4, 1),

	HUOLEISHIKE("34", "火雷噬嗑", "庚子", "庚寅", "庚辰", "己酉", "己未", "己巳", 5, 2),

	SHANLEIYI("74", "山雷颐", "庚子", "庚寅", "庚辰", "丙戌", "丙子", "丙寅", 4, 1),

	SHANFENGGU("75", "山风蛊", "辛丑", "辛亥", "辛酉", "丙戌", "丙子", "丙寅", 3, 6),


	KUNWEIDI("88", "坤为地", "乙未", "乙巳", "乙卯", "癸丑", "癸亥", "癸酉", 6, 3),

	DILEIFU("84", "地雷复", "庚子", "庚寅", "庚辰", "癸丑", "癸亥", "癸酉", 1, 4),

	DIZELIN("82", "地泽临", "丁巳", "丁卯", "丁丑", "癸丑", "癸亥", "癸酉", 2, 5),

	DITIANTAI("81", "地天泰", "甲子", "甲寅", "甲辰", "癸丑", "癸亥", "癸酉", 3, 6),

	LEITIANDAZHUANG("41", "雷天大壮", "甲子", "甲寅", "甲辰", "庚午", "庚申", "庚戌", 4, 1),

	ZETIANGUAI("21", "泽天夬", "甲子", "甲寅", "甲辰", "丁亥", "丁酉", "丁未", 5, 2),

	SHUITIANXU("61", "水天需", "甲子", "甲寅", "甲辰", "戊申", "戊戌", "戊子", 4, 1),

	SHUIDIBI("68", "水地比", "乙未", "乙巳", "乙卯", "戊申", "戊戌", "戊子", 3, 6),


	QIANWEITIAN("11", "乾为天", "甲子", "甲寅", "甲辰", "壬午", "壬申", "壬戌", 6, 3),

	TIANFENGGOU("15", "天风姤", "辛丑", "辛亥", "辛酉", "壬午", "壬申", "壬戌", 1, 4),

	TIANSHANDUN("17", "天山遁", "丙辰", "丙午", "丙申", "壬午", "壬申", "壬戌", 2, 5),

	TIANDIPI("18", "天地否", "乙未", "乙巳", "乙卯", "壬午", "壬申", "壬戌", 3, 6),

	FENGDIGUAN("58", "风地观", "乙未", "乙巳", "乙卯", "辛未", "辛巳", "辛卯", 4, 1),

	SHANDIBAO("78", "山地剥", "乙未", "乙巳", "乙卯", "丙戌", "丙子", "丙寅", 5, 2),

	HUODIJIN("38", "火地晋", "乙未", "乙巳", "乙卯", "己酉", "己未", "己巳", 4, 1),

	HUOTIANDAYOU("31", "火天大有", "甲子", "甲寅", "甲辰", "己酉", "己未", "己巳", 3, 6);

	/**
	 * 上下卦的先天数
	 */
	private String guaIndex;
	/**
	 * 卦名
	 */
	private String name;

	/**
	 * 干支1
	 */
	private String ganZhi1;

	/**
	 * 干支2
	 */
	private String ganZhi2;

	/**
	 * 干支3
	 */
	private String ganZhi3;

	/**
	 * 干支4
	 */
	private String ganZhi4;

	/**
	 * 干支5
	 */
	private String ganZhi5;

	/**
	 * 干支6
	 */
	private String ganZhi6;

	/**
	 * 世爻位置
	 */
	private Integer shiYaoIndex;

	/**
	 * 应爻位置
	 */
	private Integer yingYaoIndex;

	public String getGuaIndex() {
		return guaIndex;
	}

	public Integer getShiYaoIndex() {
		return shiYaoIndex;
	}

	public Integer getYingYaoIndex() {
		return yingYaoIndex;
	}

	public String getGanZhi(Integer index) {
		switch (index) {
			case 1:
				return ganZhi1;
			case 2:
				return ganZhi2;
			case 3:
				return ganZhi3;
			case 4:
				return ganZhi4;
			case 5:
				return ganZhi5;
			case 6:
				return ganZhi6;
			default:
				break;
		}
		return "";
	}

	GuaMainGanZhiEnum(String guaIndex, String name, String ganZhi1, String ganZhi2, String ganZhi3, String ganZhi4,
					  String ganZhi5, String ganZhi6, Integer shiYaoIndex, Integer yingYaoIndex) {
		this.guaIndex = guaIndex;
		this.name = name;
		this.ganZhi1 = ganZhi1;
		this.ganZhi2 = ganZhi2;
		this.ganZhi3 = ganZhi3;
		this.ganZhi4 = ganZhi4;
		this.ganZhi5 = ganZhi5;
		this.ganZhi6 = ganZhi6;
		this.shiYaoIndex = shiYaoIndex;
		this.yingYaoIndex = yingYaoIndex;
	}

	/**
	 * 根据合并的下标获取枚举
	 *
	 * @param index
	 * @return
	 */
	public static GuaMainGanZhiEnum getGanZhiByIndex(String index) {
		GuaMainGanZhiEnum[] values = GuaMainGanZhiEnum.values();
		for (GuaMainGanZhiEnum guaMainGanZhiEnum : values) {
			if (index.equals(guaMainGanZhiEnum.getGuaIndex())) {
				return guaMainGanZhiEnum;
			}
		}
		return null;
	}
}
